Group communication is a paradigm for communication between processes that provides certain reliability and message ordering guarantees to participating message sender/receiver processes. Participating processes may be organized into named process groups. Each member of a named process group may receive broadcast messages sent by any other member of the group, and may also be able to send such broadcast messages. Guarantees applied to these messages may include ordering guarantees and delivery guarantees.
Ordering guarantees may include Causal Ordering and Total Ordering. Causal Ordering may guarantee that if a process receives, for example, message A and sends message B afterwards, then no other process will receive message B before message A. Total Ordering may guarantee that all processes see all broadcast messages in the exact same order. In order to achieve these ordering guarantees message, delivery may be guaranteed. In order to guarantee message delivery, all processes may have a consistent “view” of a group's current membership.
As might be expected all of these guarantees may introduce considerable overhead into a messaging system in the form of out-of-band messages used to coordinate group membership and signal message delivery or non-delivery. Reducing a number of named process groups in a system may significantly improve performance by avoiding costs associated with membership management. Reducing the number of named process groups may be achieved by multiplexing multiple “virtual channels” over a single “physical channel,” where the term “channel” is used to indicate a process's connection to a named process group.
Multiplexing a virtual channel may be as simple as attaching a “virtual group name” to each message sent by a process. Receiving processes may use this extra information to determine which virtual group the message was sent to, and thusly a virtual channel on which the message should be received.
Not all members of a “physical group” may also be members of all multiplexed “virtual groups.” For example, member A might be a member of a physical group X, but might not necessarily a member of a virtual group Y that multiplexes on group X. However, all physical group members may still receive multiplexed messages and may proactively discard them.
In view of the foregoing, it may be understood that there are significant problems and shortcomings associated with current virtual group broadcast technologies.